home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / demo / cfxwdemo.zip / INSTSES.MST < prev    next >
Text File  |  1995-06-21  |  9KB  |  332 lines

  1. ''**************************************************************************
  2. ''*                       ColorLink for Windows Setup Script "install.mst"
  3. ''**************************************************************************
  4.  
  5. '$DEFINE DEBUG  ''Define for script development/debugging
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'msdetect.inc'
  9.  
  10.  
  11. ''Dialog ID's
  12. CONST WELCOME       = 100
  13. CONST WELCOME_RECV = 101
  14. CONST WELCOME_RECV1 = 102
  15. CONST WELCOME_DEMO = 103
  16. CONST ASKQUIT       = 200
  17. CONST DESTPATH      = 300
  18. CONST EXITFAILURE   = 400
  19. CONST EXITQUIT      = 600
  20. CONST EXITSUCCESS   = 700
  21. CONST OPTIONS       = 800
  22. CONST CHECK       = 2500
  23. CONST APPHELP       = 900
  24. CONST BADPATH       = 6400
  25. CONST CDGETNAMEORG   =7500
  26. CONST NOTESCSI       =8000
  27.  
  28. ''Bitmap ID
  29. CONST LOGO = 1
  30.  
  31. GLOBAL DEST$        ''Default destination directory.
  32. GLOBAL OPTCUR$      ''Option selection from option dialog.
  33.  
  34. DECLARE SUB Install
  35. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  36.  
  37. ''Customized Functions
  38. CONST SW_MAXIMIZED=3
  39. DECLARE FUNCTION ShowFrame LIB "mscuistf.dll" (Hwnd%, Show%) AS INTEGER
  40. DECLARE FUNCTION SaveCustomerInfo LIB "mscuistf.dll" (Profile$, S1$, S2$, S3$) AS INTEGER
  41. DECLARE FUNCTION GetWinSysDir LIB "mscuistf.dll" (SYSDIR$) AS INTEGER
  42.  
  43. INIT:
  44.     PRODCAT$ = "Demo"
  45.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  46.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  47.     S0$ = ""        ''product Type
  48.     S1$ = ""        ''Customer Name
  49.     S2$ = ""        ''Customer organization
  50.     S3$ = ""        ''Serial number
  51.     SetSymbolValue "ProdType",S0$
  52.     SetSymbolValue "NameOut",S1$
  53.     SetSymbolValue "OrgOut",S2$
  54.     SetSymbolValue "SerialOut",S3$
  55.     
  56.     SetBitmap CUIDLL$, LOGO
  57.     SetTitle "Install ColorLink for Windows"   
  58.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  59.     IF szInf$ = "" THEN
  60.         szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
  61.     END IF
  62.     ReadInfFile szInf$
  63.  
  64.     OPTCUR$ = "1"
  65.     DEST$ = "C:\CLDEMO"
  66.  
  67. '$IFDEF DEBUG
  68.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  69.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  70.     IF IsDriveValid(WinDrive$) = 0 THEN
  71.         i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  72.         GOTO QUIT
  73.     END IF
  74. '$ENDIF ''DEBUG
  75.  
  76.  
  77. WELCOME:                                                        
  78.     SetSymbolValue "HelpOn","WELCOME"
  79.     IF PRODCAT$ = "Universal" THEN
  80.         sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  81.     ELSEIF PRODCAT$ = "Demo" THEN
  82.         sz$ = UIStartDlg(CUIDLL$, WELCOME_DEMO, "FInfoDlgProc", APPHELP, HELPPROC$)
  83.     ELSE
  84.         sz$ = UIStartDlg(CUIDLL$, WELCOME_RECV, "FInfoDlgProc", APPHELP, HELPPROC$)
  85.     ENDIF
  86.     IF sz$ = "CONTINUE" THEN
  87.         UIPop 1
  88.         x%=ShowFrame(HwndFrame(),SW_MAXIMIZED)
  89.     ELSE
  90.         GOSUB ASKQUIT
  91.         GOTO WELCOME
  92.     END IF
  93.  
  94.  
  95. SIGNUP:
  96.     IF PRODCAT$ = "Universal" THEN
  97.         sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", 0, "")
  98.         S1$ = GetSymbolValue("NameOut")
  99.         S2$ = GetSymbolValue("OrgOut")
  100.         S3$ = GetSymbolValue("SerialOut")
  101.         IF sz$ = "CONTINUE" THEN
  102.             UIPop 1
  103.         ELSEIF sz$ = "REACTIVATE" THEN
  104.             GOTO SIGNUP
  105.         ELSEIF sz$ = "BACK" THEN
  106.             UIPop 1
  107.             GOTO WELCOME
  108.         ELSEIF sz$ = "EXIT" THEN
  109.             GOSUB ASKQUIT
  110.             GOTO SIGNUP
  111.         END IF
  112.     END IF
  113.     
  114. OPTION:
  115.     SetSymbolValue "HelpOn","OPTION"
  116.     CHECKIN$ = "CheckItemsIn"
  117.     nList% = GetListLength(CHECKIN$)
  118.     IF nList% = 0 THEN
  119.         AddListItem CHECKIN$,"ON"
  120.         AddListItem CHECKIN$,"OFF"
  121.     ENDIF
  122.     GOTO GETPATH
  123.     
  124. OPTL1:
  125.     sz$ = UIStartDlg(CUIDLL$, CHECK, "FCheckDlgProc", APPHELP, HELPPROC$)
  126.     nList% = GetListLength("CheckItemsOut")
  127.     FOR i% =1 TO nList% STEP 1
  128.         szOption$ = GetListItem("CheckItemsOut", i%)
  129.         ReplaceListItem CHECKIN$, i%, szOption$
  130.     NEXT
  131.     IF sz$ = "CONTINUE" THEN
  132.         UIPop(1)
  133.     ELSEIF sz$ = "REACTIVATE" THEN
  134.         GOTO OPTL1
  135.     ELSEIF sz$ = "BACK" THEN
  136.         UIPop 1
  137.         GOTO SIGNUP
  138.     ELSE
  139.         GOSUB ASKQUIT
  140.         GOTO OPTION
  141.     END IF
  142.  
  143.  
  144. GETPATH:
  145.     SetSymbolValue "HelpOn","GETPATH"
  146.     SetSymbolValue "EditTextIn", DEST$
  147.     SetSymbolValue "EditFocus", "END"
  148. GETPATHL1:
  149.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  150.     DEST$ = GetSymbolValue("EditTextOut")
  151.     IF sz$ = "CONTINUE" THEN
  152.         IF IsDirWritable(DEST$) = 0 THEN
  153.             GOSUB BADPATH
  154.             GOTO GETPATHL1
  155.         END IF
  156.         UIPop 1
  157.     ELSEIF sz$ = "REACTIVATE" THEN
  158.         GOTO GETPATHL1
  159.     ELSEIF sz$ = "BACK" THEN
  160.         UIPop 1
  161.         IF PRODCAT$ = "Universal" THEN
  162.             GOTO SIGNUP
  163.         ELSE
  164.             GOTO WELCOME
  165.         ENDIF   
  166.     ELSE
  167.         GOSUB ASKQUIT
  168.         GOTO GETPATH
  169.     END IF
  170.  
  171. DOINSTALL:
  172.     Install
  173.     ''Save customer information
  174.     IF PRODCAT$ = "Demo" THEN
  175.         x%=FCreateIniKeyValue("WIN.INI", "CLFWS", "EXEC", "rBQY", cmoNone)
  176.     ELSE
  177.         x%=SaveCustomerInfo("COLORLNK.INI", S1$, S2$, S3$) ''under Windows directory
  178.     ENDIF
  179.  
  180. QUIT:
  181.     ''ON ERROR GOTO ERRQUIT
  182.  
  183.     IF ERR = 0 THEN
  184.         dlg% = EXITSUCCESS
  185.     ELSEIF ERR = STFQUIT THEN
  186.         dlg% = EXITQUIT
  187.     ELSE
  188.         dlg% = EXITFAILURE
  189.     END IF
  190. QUITL1:
  191.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  192.     IF sz$ = "REACTIVATE" THEN
  193.         GOTO QUITL1
  194.     END IF
  195.     UIPop 1
  196.     
  197.     IF dlg% = EXITSUCCESS THEN
  198.         GOTO ENDINSTALL
  199.     ELSE
  200.         GOTO ENDINSTALL
  201.     ENDIF
  202.  
  203. NOTESCSI:
  204.     sz$ = UIStartDlg(CUIDLL$, NOTESCSI, "FInfo0DlgProc", 0, "")
  205.     IF sz$ = "REACTIVATE" THEN
  206.         GOTO NOTESCSI
  207.     END IF
  208.     UIPop 1
  209.  
  210. ENDINSTALL:    
  211.     END
  212.     ''End of program
  213.     
  214.     
  215.     
  216. ERRQUIT:
  217.     ''i% = DoMsgBox("Setup sources were corrupted, call 555-1212!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  218.     END
  219.  
  220.  
  221.  
  222. BADPATH:
  223.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  224.     IF sz$ = "REACTIVATE" THEN
  225.         GOTO BADPATH
  226.     END IF
  227.     UIPop 1
  228.     RETURN
  229.  
  230.  
  231. ASKQUIT:
  232.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  233.  
  234.     IF sz$ = "EXIT" THEN
  235.         UIPopAll
  236.         ERROR STFQUIT
  237.     ELSEIF sz$ = "REACTIVATE" THEN
  238.         GOTO ASKQUIT
  239.     ELSE
  240.         UIPop 1
  241.     END IF
  242.     RETURN
  243.  
  244.  
  245.  
  246. '**
  247. '** Purpose:
  248. '**     Builds the copy list and performs all installation operations.
  249. '** Arguments:
  250. '**     none.
  251. '** Returns:
  252. '**     none.
  253. '*************************************************************************
  254. SUB Install STATIC
  255.  
  256.     CreateDir DEST$, cmoNone
  257.  
  258.     ''OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  259.     ''WriteToLogFile ""
  260.     ''WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  261.     ''WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  262.     ''WriteToLogFile ""
  263.     ''WriteToLogFile "May have had to create the directory: " + DEST$
  264.     ''WriteToLogFile ""
  265.  
  266.     ''AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  267.     ''AddSectionKeyFileToCopyList "Options", OPTCUR$, SrcDir$, DEST$
  268.     ''get ColorLink option
  269.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  270.     CHECKIN$ = "CheckItemsIn"
  271.     OPSTR1$ = GetListItem(CHECKIN$, 1)
  272.     IF OPSTR1$ = "ON" THEN
  273.         AddSectionFilesToCopyList "Files", SrcDir$, DEST$
  274.     ENDIF                       
  275.     ''get SCSI option                                   
  276.     OPSTR2$ = GetListItem (CHECKIN$, 2)
  277.     IF OPSTR2$ = "ON" THEN
  278.         ''AddSectionFilesToCopyList "SCSI", SrcDir$, DEST$
  279.         ''Get Windows system directoy
  280.         SYSDIR$ = STRING$(255, 0)
  281.         x%=GetWinSysDir(SYSDIR$)
  282.         AddSectionFilesToCopyList "SCSI", SrcDir$, SYSDIR$
  283.     ENDIF
  284.     CopyFilesInCopyList
  285.  
  286.     ''GOSUB SIGNUP
  287.     
  288.     ''ini$ = MakePath(DEST$, "DEMO.INI")
  289.     ''CreateIniKeyValue "WIN.INI", "MSSetup Sample 1", "Option", OPTCUR$, cmoNone
  290.     ''CreateIniKeyValue ini$, "Section 1", "Key 1", "Value 1" , cmoNone
  291.     ''CreateIniKeyValue ini$, "Section 2", "Key 2", "Value 2" , cmoNone
  292.     ''CreateIniKeyValue ini$, "Section 3", "Key 3", "Value 3" , cmoNone
  293.  
  294.     IF OPSTR1$="ON" THEN
  295.         CreateProgmanGroup "Laser Today", "", cmoNone
  296.         ShowProgmanGroup  "Laser Today", 1, cmoNone
  297.         CreateProgmanItem "Laser Today", "Read Me", "write.exe "+MakePath(DEST$,"readme.wri"), "", cmoOverwrite
  298.         CreateProgmanItem "Laser Today", "ColorLink Demo.", MakePath(DEST$,"colorlnk.exe"), "", cmoOverwrite
  299.     ENDIF
  300.  
  301.     
  302.     ''AddDos5Help "YOURAPP", "A brief help text for your Windows application."+chr$(10)+"It can be continued on another line with chr$(10).", cmoNone
  303.  
  304.     ''CloseLogFile
  305.  
  306. END SUB
  307.  
  308.  
  309.  
  310. '**
  311. '** Purpose:
  312. '**     Appends a file name to the end of a directory path,
  313. '**     inserting a backslash character as needed.
  314. '** Arguments:
  315. '**     szDir$  - full directory path (with optional ending "\")
  316. '**     szFile$ - filename to append to directory
  317. '** Returns:
  318. '**     Resulting fully qualified path name.
  319. '*************************************************************************
  320. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  321.     IF szDir$ = "" THEN
  322.         MakePath = szFile$
  323.     ELSEIF szFile$ = "" THEN
  324.         MakePath = szDir$
  325.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  326.         MakePath = szDir$ + szFile$
  327.     ELSE
  328.         MakePath = szDir$ + "\" + szFile$
  329.     END IF
  330. END FUNCTION
  331.  
  332.